<?php

namespace Users\Register\Helper;

use Users\Profile;
use Pinenut\User\Auth\EmailPassword as Auth;
use Pinenut\Form;
use Users\Register\EmailPasswordFormConfig as FormConfig;
/**
 * Обработчик формы локальной регистрации
 *
 * @author kosh
 *
 */
trait EmailPassword {


	/**
	 * Имя класса формы, используемой при аутентификации
	 * По умолчанию стандартное
	 *
	 * Трейты не дают возможности прописать тут это, придётся в
	 *
	 */

	protected static $_defaultFormConfigClass = '\Users\Register\EmailPasswordFormConfig';

	
	
	static function pullParams() {
		return ['sessionId'];
	}
	
	/**
	 * Получение аутентификационных данных
	 *
	 * @return void|\Pinenut\User\Auth\EmailPassword
	 */

	function auth() {
		$formClass = property_exists($this, '_formConfigClass')
				?(static::$_formConfigClass)
				:(static::$_defaultFormConfigClass);
		$formConfig = $formClass::get();

		if ($this->request->submitLabel) {
			$formConfig['elements']['submit']['label'] = $this->request->submitLabel;
		}

		$formConfig['htmlOptions']['action'] = $this->url($this->request->action);

		$form = new Form ( $this->request->_sessionId, 'emailPasswordRegister', $formConfig );

		if ($this->request->isPost() && $this->request->isAjax() && !$this->request->onlyRender) {
			$form->process($this->request->params(), true);
			$this->response->content =  $form->render();
			$this->response->noRender(true);
			return;

		} else if ($this->request->isPost () && !$this->request->onlyRender) {
			if (!$form->process($this->request->params())) {
				$this->response->form = $form;
				return;
			}
			// уже проверили что всё ок
			// создаём пользователя
			$data = $form->getValues();
			$auth = new Auth();
			$auth->email = $data['email'];
			$auth->setPassword($data['password']);
			// сохраняем данные, чтобы использовать их при заполнении профиля
			$this->data = $data;
			$form->flush();

			return $auth;
		}
		$this->response->form = $form;
	}
	function profile() {
		$profile = new Profile();
		$profile->nickname = $this->data['name'];
		return $profile;
	}
}